// import java.math.BigDecimal;
// import java.sql.SQLException;
#pragma once
#include "../../utils/common_ptr.h"
#include "../../utils/BigDecimal.h"

class SQLInsertValueHandler
{
public:
  Object_ptr newRow() /*throws SQLException*/{};

  void processInteger(Object_ptr row, int index, double value) /*throws SQLException*/{};

  void processString(Object_ptr row, int index, string_ptr value) /*throws SQLException*/{};

  void processDate(Object_ptr row, int index, string_ptr value) /*throws SQLException*/{};

  // void processDate(Object_ptr row, int index, java.util.Date value) /*throws SQLException*/{};

  void processTimestamp(Object_ptr row, int index, string_ptr value) /*throws SQLException*/{};

  // void processTimestamp(Object_ptr row, int index, java.util.Date value) /*throws SQLException*/{};

  void processTime(Object_ptr row, int index, string_ptr value) /*throws SQLException*/{};

  void processDecimal(Object_ptr row, int index, BigDecimal value) /*throws SQLException*/{};

  void processBoolean(Object_ptr row, int index, BOOL_ptr value) /*throws SQLException*/{};

  void processNull(Object_ptr row, int index) /*throws SQLException*/{};

  void processFunction(Object_ptr row,
                       int index,
                       string_ptr funcName,
                       long funcNameHashCode64,
                       Object_list_ptr values) /*throws SQLException*/{};

  void processFunction(Object_ptr row,
                       int index,
                       string_ptr funcName,
                       long funcNameHashCode64,
                       string_list_ptr values) /*throws SQLException*/{};

  void processRow(Object_ptr row) /*throws SQLException*/{};

  void processComplete() /*throws SQLException*/{};
};
